#ifndef OBJECT_H
#define OBJECT_H

#include "SFML\Graphics.hpp"
#include <iostream>


class Object
{
public:
	//physics variables
	bool isCollidable = true;
	bool isPhysical = true;
	bool isScrolingObject = false;
	bool isVisable = true;
	sf::Vector2f acc = sf::Vector2f(0, 0);
	sf::Vector2f vel = sf::Vector2f(0, 0);
	sf::Vector2f pos = sf::Vector2f(0, 0);
	float radius = 0.0f;
	const char* name;

protected:
	Object(const char* objName = "defaultObject") : name(objName){};
	virtual ~Object();  // Note: Virtual destructor because we have virtual methods
	friend class Factory;

	// Abstract virtual functions: (This makes our class abstract)
	virtual void Render(sf::RenderWindow* window) = 0;
	virtual void Update(float deltaT) = 0;
	virtual void CollidedWith(Object* collided){};


	// Variables that all objects have:
	//sf::Vector3f position;
};


#endif // OBJECT_H